#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QMenuBar>
#include <QPixmap>
#include <QPainter>   //绘图
#include <QPaintEvent>
#include <QVector>

// 命名空间指令，将MainWindow类放入Qt命名空间中，以避免命名冲突
QT_BEGIN_NAMESPACE

namespace Ui { class MainWindow; }

QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
    Q_OBJECT        // Q_OBJECT：宏定义，用于支持Qt的信号和槽机制
public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void on_btn_Exit_clicked();     // 返回界面
    void on_btn_delete_clicked();   // 删除按钮
    void on_btn_Save_clicked();     // 保存按钮

    void on_btn_Pen_clicked();      // 画笔
    void on_btn_eraser_clicked();   // 橡皮擦

    void paintEvent(QPaintEvent *ev);       //绘图
    void mousePressEvent(QMouseEvent *ev);  //鼠标按下
    void mouseMoveEvent(QMouseEvent *ev);
    void mouseReleaseEvent(QMouseEvent *ev);

    void on_btn_StraightLine_clicked();    // 直线
    void on_btn_round_clicked();           // 椭圆
    void on_btn_rectangle_clicked();       // 矩形

    void openFile();
    QPointF gridToActualCoordinate(const QPoint& gridPoint);

private:
    Ui::MainWindow *ui;

    int mx, my;
    double resolution;
    double mapOriginX;
    double mapOriginY;

    QPen *pen;           //画笔
    QPixmap *pix;        //画布
    QPixmap *pix_new;    //画布new

    QPoint point;
    int pen_shape;       //画笔形状(直线,矩形,椭圆)

    QString folderPath;  //保存文件的路径
    QVector<QPoint> mPoints;
};
#endif // MAINWINDOW_H













